package com.xhtt.modules.task.entity;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.xhtt.modules.task.model.ship.WorkUserModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;

import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;

/**
 * <p>
 * 操作分支任务-任务分配计划
 * </p>
 *
 * @author feipc
 * @since 2019-03-09
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class TaskOperTask {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    private Integer operPlanId;

    @TableField(exist = false)
    private String serialNo;//主任务流水号

    @TableField(exist = false)
    private String mainTaskName;//主任务名称

    /**
     * 任务名称
     */
    private String name;

    /**
     * 4进行中9完成(跟主任务同步)
     */
    private Integer status;

    /**
     * 正常任务（。。。）+临时任务   11收料 12送料 13炭桶更换 14滤芯更换 15循环 16加热 17制冷 18打尺、取样 19VOCEC检测 20CCR记录 99其他
     */
    private Integer type;

    /**
     * 任务开始时间
     */
    private LocalDateTime taskStartDate;

    /**
     * 任务结束时间
     */
    private LocalDateTime taskEndDate;

    /**
     * 执行班组
     */
    private Integer execTeamId;
    @TableField(exist = false)
    private String execTeamName;

    /**
     * 任务要求
     */
    private String taskRequire;

    /**
     * 主要操作人
     */
    private Integer userMainId;
    @TableField(exist = false)
    private String userMainName;

    /**
     * 协助人员
     */
    private String userAssist;

    @TableField(exist = false)
    private List<WorkUserModel> userAssistModel;

    /**
     * 是否拍照
     */
    private Integer ifPhoto;

    /**
     * 是否要确认
     */
    private Integer ifConfirm;

    /**
     * 确认人
     */
    private Integer confirmUser;
    @TableField(exist = false)
    private String confirmUserName;

    /**
     * 确认人确认状态
     */
    private Integer confirmStatus;

    private String confirmReason;

    /**
     * 原因说明
     */
    private String reason;

    /**
     * 照片
     */
    private String photo;

    /**
     * 备注
     */
    private String memo;

    private String taskFre;//任务频率

    private Integer ccrTotal;

    private Integer ccrDone;

    /**
     * 现场操作json
     */
    private String operDetail;

    private LocalDateTime pubTime;//分配时间

    private LocalDateTime startTime;//开始时间

    /**
     * 完工时间
     */
    private LocalDateTime finishTime;

    private Integer msgStartFlag;//开始任务超时报警

    private Integer msgFlag;//超时报警是否发送0 没有 1发送了 发送了就不用再发了

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 最后一次调整时间
     */
    @TableField(update = "now()")
    private LocalDateTime updateTime;

    /**
     * 创建者ID，人工系统创建为0
     */
    private Integer createUserId;

    /**
     * 最后一次调整者ID
     */
    private Integer updateUserId;

    public List<WorkUserModel> getUserAssistModel() {
        if (CollectionUtils.isNotEmpty(userAssistModel)) {
            return userAssistModel;
        }
        if (StringUtils.isNotEmpty(userAssist)) {
            return JSON.parseArray(userAssist, WorkUserModel.class);
        } else {
            return Collections.EMPTY_LIST;
        }
    }

}
